package com.shop.www.ssm.filters;


import com.shop.www.ssm.util.StringUtil;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import java.io.IOException;
//第一步，在第一个过滤器设置编码
@WebFilter
        (urlPatterns = {"*.do"},initParams = {
                @WebInitParam(name = "encoding",value = "UTF-8")})
public class CharacterEncodingFilter implements Filter {

    private String encoding = "UTF-8";

    @Override//init是初始化，把encoding的内容值也就是UTF-8带到doFilter中
    public void init(FilterConfig filterConfig) throws ServletException {
        String encodingStr = filterConfig.getInitParameter("encoding");
        if(StringUtil.isNotEmpty(encodingStr)){
            encoding = encodingStr ;
        }
    }

    @Override//doFilter是每个Servlet必须经过的过程，在这里设置编码
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
     /*   servletRequest.setCharacterEncoding(encoding);*/
        (servletRequest).setCharacterEncoding(encoding);
        (servletResponse).setCharacterEncoding(encoding);
        //请求到达 Web 资源之前，先调用 Filter 的 doFilter () 方法，检查 request 对象，
        // 修改请求头和请求正文，或对请求进行预处理操作。 在 Filter 的 doFilter () 方法内，
        // 调用 FilterChain.doFilter () 方法，将请求传递给下一个过滤器或目标资源。
        filterChain.doFilter(servletRequest,servletResponse);

    }

    @Override
    public void destroy() {

    }
}
